<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Promise封装Ajax请求</title>
  </head>
  <body>
    <script>
      // 接口地址: https://api.apiopen.top/getJoke

      const p = new Promise((resolve, reject) => {
        // 1.创建对象
        const xhr = new XMLHttpRequest();

        // 2.初始化
        xhr.open("GET", "https://api.apiopen.top/getJoke");

        // 3.发送
        xhr.send();

        // 4.绑定事件，处理结果
        xhr.onreadystatechange = function () {
          // 判断状态是否为4，表示请求已经完成
          if (xhr.readyState === 4) {
            // 判断响应状态码 200-299 成功
            if (xhr.status >= 200 && xhr.status < 300) {
              // 表示成功
              resolve(xhr.response);
              // 修改为成功状态并传参
            } else {
              // 如果失败
              reject(xhr.status);
              // 修改为失败状态并传参
            }
          }
        };
      });

      // 指定回调
      p.then(
        function (value) {
          console.log(value);
        },
        function (reason) {
          console.log(reason);
        }
      );
    </script>
  </body>
</html>
